package org.uc3m.ed.tad.lista;

import java.util.NoSuchElementException;

/**
 * Implementacion <B>no robusta</B> de un iterador para una lista de elementos.
 * La lista se recorre en el sentido habitual: de la primera a la ultima
 * posicion.
 * 
 * @author DEI - ED
 * @version 1.0
 */
public class ListaIterador<E> implements IListaIterador<E> {
	
	/**
	 * Lista sobre la cual se realiza la iteracion.
	 * 
	 * @see ILista<E>
	 */
	private ILista<E> _lista;

	/**
	 * Posicion ocupada por el ultimo elemento recorrido;
	 */
	private int _actual;

	/**
	 * Crea un iterador sobre una lista.
	 * 
	 * @param lista
	 *            Lista sobre la cual se realizara la iteracion.
	 */
	public ListaIterador(ILista<E> lista) {
		_lista = lista;
		_actual = 0;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.uc3m.ed.tad.lista.ListaIterador#haySiguiente()
	 */
	public boolean haySiguiente() {
		return (_actual != _lista.longitud());
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.uc3m.ed.tad.lista.ListaIterador#siguiente()
	 */
	public E siguiente() {
		E elemento = null;
		if (_actual != _lista.longitud()) {
			elemento = _lista.recuperar(_actual);
			_actual += 1;
		} else {
			throw new NoSuchElementException();
		}
		return elemento;
	}
}
